1ac64d8fa3680e78b168c00fafe49c8fcd35bbb3,chapter9/src/main/java/org/lwjglb/engine/graph/Transformation.java,Transformation,getViewMatrix,#Camera#,28

Before Change


        viewMatrix.identity();
        Vector3f cameraPos = camera.getPosition();
        Vector3f rotation = camera.getRotation();
        viewMatrix.translate(-cameraPos.x, -cameraPos.y, -cameraPos.z).
                rotateX((float)Math.toRadians(rotation.x)).
                rotateY((float)Math.toRadians(rotation.y)).
                rotateZ((float)Math.toRadians(rotation.z));
        return viewMatrix;
    }

After Change


        
        viewMatrix.identity();
        // First do the rotation so camera rotates over its position
        viewMatrix.rotate((float)Math.toRadians(rotation.x), new Vector3f(1, 0, 0))
                .rotate((float)Math.toRadians(rotation.y), new Vector3f(0, 1, 0));
        // Then do the translation
        viewMatrix.translate(-cameraPos.x, -cameraPos.y, -cameraPos.z);
        return viewMatrix;
    }